﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PGI.LN.Producto;

namespace PGI.WF
{
    public partial class FrmOpcionMantenimiento : Form
    {
        public int OpcionProducto = 0;
        public int TipoOpcionProducto = 0;

        public FrmOpcionMantenimiento()
        {
            InitializeComponent();
        }

        private void FrmOpcionMantenimiento_Load(object sender, EventArgs e)
        {
            try
            {
                lstBTipoOpcionProducto.SelectedIndexChanged -= lstBTipoOpcionProducto_SelectedIndexChanged;
                lstBTipoOpcionProducto.DataSource = TipoOpcionProductoLn.ConsultaTipoOpcionProducto();
                lstBTipoOpcionProducto.DisplayMember = "Descripcion";
                lstBTipoOpcionProducto.ValueMember = "TipoOpcionID";
                lstBTipoOpcionProducto.SelectedIndex = -1;
                lstBTipoOpcionProducto.SelectedIndexChanged += lstBTipoOpcionProducto_SelectedIndexChanged;

                if (OpcionProducto != 0)
                {

                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void lstBTipoOpcionProducto_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstBTipoOpcionProducto.SelectedValue != null)
            {
                int _tipoOpcionID = Convert.ToInt32(lstBTipoOpcionProducto.SelectedValue.ToString());
                lstBOpcionProducto.DataSource = OpcionProductoLn.ConsultaOpcionProducto(_tipoOpcionID);
                lstBOpcionProducto.DisplayMember = "Descripcion";
                lstBOpcionProducto.ValueMember = "OpcionID";
                lstBOpcionProducto.SelectedIndex = -1;
            }
        }   

        private void btnAgregarTipoOpcion_Click(object sender, EventArgs e)
        {
            try
            {
                FrmTipoOpcionProductoInsertar frmInsTipoOpcionProd = FrmTipoOpcionProductoInsertar.Instance();
                frmInsTipoOpcionProd.ShowDialog();
                frmInsTipoOpcionProd.Activate();

                lstBTipoOpcionProducto.DataSource = null;
                FrmOpcionMantenimiento_Load(sender, e);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void btnEliminarTipoOpcion_Click(object sender, EventArgs e)
        {
            try
            {
                 int TipoOpcionProducto = Convert.ToInt32(lstBTipoOpcionProducto.SelectedValue);

                 if (TipoOpcionProducto != 0)
                 {
                     DialogResult dr = MessageBox.Show("¿Está seguro de eliminar este Tipo Opción de Producto?", "Eliminación de Tipo Opcion Producto", MessageBoxButtons.YesNo);

                     if (dr == DialogResult.Yes)
                     {
                         int TipoOpcionProd = Convert.ToInt32(lstBTipoOpcionProducto.SelectedValue);
                         int resulElim = 0;


                         if (TipoOpcionProd != 0)
                         {
                             resulElim = TipoOpcionProductoLn.EliminarTipoOpcionProducto(TipoOpcionProd);

                             if (resulElim > 0)
                             {
                                 MessageBox.Show(this, "Tipo Opcion de Producto eliminado exitosamente.", "INFORMACIÓN", MessageBoxButtons.OK, MessageBoxIcon.Information);

                                 lstBTipoOpcionProducto.DataSource = null;
                                 FrmOpcionMantenimiento_Load(sender, e);
                             }
                             else
                             {
                                 MessageBox.Show(this, "Se produjo un error al eliminar el Tipo Opcion Producto. Intentelo nuevamente.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                             }
                         }
                     }
                 }
                 else
                     MessageBox.Show(this, "Debe seleccionar un Tipo de Opción de Producto para eliminar.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }

        private void btnAgregarOpcion_Click(object sender, EventArgs e)
        {
            try
            {
                int TipoOpcionProducto = Convert.ToInt32(lstBTipoOpcionProducto.SelectedValue);

                if (TipoOpcionProducto != 0)
                {
                    FrmOpcionProductoInsertar frmInsOpcionProd = FrmOpcionProductoInsertar.Instance();
                    frmInsOpcionProd.TipoOpcionProducto = TipoOpcionProducto;
                    frmInsOpcionProd.ShowDialog();
                    frmInsOpcionProd.Activate();

                    lstBTipoOpcionProducto_SelectedIndexChanged(sender, e);
                }
                else
                    MessageBox.Show(this, "Debe seleccionar un Tipo de Opción de Producto para agregar.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }

        private void btnEliminarOpcion_Click(object sender, EventArgs e)
        {
            try
            {
                int TipoOpcionProducto = Convert.ToInt32(lstBTipoOpcionProducto.SelectedValue);

                if (TipoOpcionProducto != 0)
                {
                    DialogResult dr = MessageBox.Show("¿Está seguro de eliminar esta  Opción de Producto?", "Eliminación de Tipo Opcion Producto", MessageBoxButtons.YesNo);

                    if (dr == DialogResult.Yes)
                    {
                        int OpcionProd = Convert.ToInt32(lstBOpcionProducto.SelectedValue);
                        int resulElim = 0;


                        if (OpcionProd != 0)
                        {
                            resulElim = OpcionProductoLn.EliminarOpcionProducto(OpcionProd);

                            if (resulElim > 0)
                            {
                                MessageBox.Show(this, "Opcion de Producto eliminado exitosamente.", "INFORMACIÓN", MessageBoxButtons.OK, MessageBoxIcon.Information);

                                lstBOpcionProducto.DataSource = null;
                                lstBTipoOpcionProducto_SelectedIndexChanged(sender, e);
                            }
                            else
                            {
                                MessageBox.Show(this, "Se produjo un error al eliminar la Opcion Producto. Intentelo nuevamente.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                        }
                    }
                }
                else
                    MessageBox.Show(this, "Debe seleccionar una Opción de Producto para eliminar.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void FrmOpcionMantenimiento_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Escape)
                this.Dispose();
        }
    }
}
